package com.zuipin.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.zuipin.entity.OrderInfo;
import com.zuipin.util.Pagination;
import com.zuipin.vo.OrderSerachVo;

/**
 * OrderInfoMapper数据库操作接口类
 **/
@Mapper
public interface OrderInfoMapper {
	
	/**
	 * 查询（根据主键ID查询）
	 **/
	OrderInfo selectByPrimaryKey(@Param("id") Long id);
	
	/**
	 * 删除（根据主键ID删除）
	 **/
	int deleteByPrimaryKey(@Param("id") Long id);
	
	/**
	 * 添加
	 **/
	int insert(OrderInfo record);
	
	/**
	 * 添加 （匹配有值的字段）
	 **/
	int insertSelective(OrderInfo record);
	
	/**
	 * 修改 （匹配有值的字段）
	 **/
	int updateByPrimaryKeySelective(OrderInfo record);
	
	/**
	 * 修改（根据主键ID修改）
	 **/
	int updateByPrimaryKey(OrderInfo record);
	
	OrderInfo findOrderInfoByOrderNo(String orderNo);
	
	/**
	 * @Description:根据order信息查询
	 * @Title:
	 * @author: xujinding
	 * @date: 2017年3月28日上午9:49:02
	 */
	List<Map<String, Object>> findOrderInfoByPage(Map<String, Object> map);
	
	List<OrderInfo> findOrderListByPayId(Long payId);
	
	List<Map<String, Object>> findBackListOrderByPage(@Param("order") OrderSerachVo order, @Param("tempTreeOrderStatus") List<String> tempTreeOrderStatus,
			@Param("arrayStatus") String[] arrayStatus, @Param("page") Pagination page);
	
	List<Map<String, Object>> preOrderList(@Param("param") Map<String, Object> param, @Param("page") Pagination page);
	
	List<Map<String, Object>> findStatusNum(@Param("param") Map<String, Object> param);
	
	Integer findWaitNumNum(@Param("param") Map<String, Object> param);
	
	Map<String, Object> getOrderAndPayInfoByOrderNo(@Param("param") Map<String, Object> map);
	
	List<Map<String, Object>> findCancelOrder();
	
	List<Map<String, Object>> getOrderByIds(@Param("param") Map<String, Object> map);
	
	Map<String, Object> getMembertotal(@Param("param") Map<String, Object> param);
	
	/**
	 * 根据系统ID查询可确认收货订单
	 *
	 * @Title: findCanComfimReceiptOrder 
	 * @author: wuyicheng
	 * @date: 2017年6月19日下午6:28:56 
	 * @param sysId
	 * @return
	 * @return: List<Map<String,Object>>
	 * @throws
	 */
	List<Map<String, Object>> findCanComfimReceiptOrder(Long sysId);
	
	/** 
	 * 统计商品购买订单数量 
	 * 
	 * @Title: countBuyOrderByProSku 
	 * @author: wuyicheng
	 * @date: 2017年7月13日下午7:56:09 
	 * @param memberId 会员ID
	 * @param sysId 系统ID
	 * @param proSku 商品SKU
	 * @param startTime 特价规则开始时间
	 * @param endTime 特价规则截至之间
	 * @return
	 * @return: int
	 * @throws 
	 */
	int countBuyOrderByProSku(@Param("memberId") Long memberId, @Param("sysId") Long sysId, @Param("proSku") String proSku, @Param("startTime") String startTime,
			@Param("endTime") String endTime);
	
	OrderInfo findOrderInfoByInvoiceId(@Param("invoiceId") Long invoiceId);
}